From: Florian Müllner Date: Wed, 10 Jul 2013 00:33:08 +0000 (+0200) Subject: st-theme-node: Update corner textures on allocation size changes X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~3962 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e031a5d28b9d4ea82bd89d1a51bbc2789545a4ba;p=gnome-shell.git st-theme-node: Update corner textures on allocation size changes Commit 318283fc70 optimized box-shadow rendering by not recreating shadow materials on every allocation change. Other handles cannot be reused and are updated regularly, however the patch missed the cached corner materials - while those can be reused, we still need to ensure that the currently used paint state references them. https://bugzilla.gnome.org/show_bug.cgi?id=703909 --- diff --git a/src/st/st-theme-node-drawing.c b/src/st/st-theme-node-drawing.c index 1a2cea316..0b76f6b2d 100644 --- a/src/st/st-theme-node-drawing.c +++ b/src/st/st-theme-node-drawing.c @@ -1537,6 +1537,15 @@ st_theme_node_update_resources (StThemeNodePaintState *state, state->prerendered_texture = st_theme_node_prerender_background (node, width, height); state->prerendered_material = _st_create_texture_material (state->prerendered_texture); } + else + { + int corner_id; + + for (corner_id = 0; corner_id < 4; corner_id++) + if (state->corner_material[corner_id] == COGL_INVALID_HANDLE) + state->corner_material[corner_id] = + st_theme_node_lookup_corner (node, width, height, corner_id); + } if (had_box_shadow) state->box_shadow_material = _st_create_shadow_material (box_shadow_spec,